Given that CStatic::SetBitmap takes a gdi bitmap handle and seems to just issue an STM_SETIMAGE message, I'd think you'd have to free the bitmap resource when done - using DeleteObject on that bitmap won't do any harm anyway - presumably something like:
Code:
::DeleteObject(SetBitmap(0));
in the CStatic object's destructor would be okay?
On the other hand, if it's an mfc CBitmap that's used (via its operator HBITMAP) then it may well be responsible for it's own destruction - you can always test it with a local scope CBitmap: if the bitmap remains displayed by the CStatic once the CBitmap has gone out of scope then the CBitmap mfc class is broken and you'll have to manually clean up after it.
eg.
Code:
Your_CStatic::TestFn()
{
CBitmap bmp();
//initialise bmp appropriately
SetBitmap(bmp);
}
/*if bitmap is still valid and visible in CStatic control at this point
ie after 'bmp' object no longer in scope then you need to clean up after it*/